package com.example.hoasbackend.service;

import com.example.hoasbackend.model.VO.GetIndentBatchVO;
import com.example.hoasbackend.model.domain.Indent;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.hoasbackend.model.AO.CreateIndentBatchAO;
import com.example.hoasbackend.model.dto.IndentRedis;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author lhx
 * @since 2022-03-03
 */
public interface IndentService extends IService<Indent> {
    /**
     * 输入DTO转换成indent，补充基本信息
     * @param createIndentBatchAO
     * @return
     */
    Indent turnCreateIndentBatchAOToIndent(CreateIndentBatchAO createIndentBatchAO,long userName,long batchId);

    /**
     * 根据indentBasicInfo将订单分成roomNum个
     * @param indentBasicInfo
     * @param roomNum
     * @return
     */
    List<Indent> splitIndentBatch(Indent indentBasicInfo, long roomNum);

    /**
     * 新建并存储indent
     *
     * @param indent
     * @param checkInTime
     * @param checkOutTime
     */
    void createIndent(Indent indent, String checkInTime, String checkOutTime);

    /**
     * 根据batchID获取所有indent
     * @param batchId
     * @return
     */
    List<Indent> getListByBatchId(long batchId);

    /**
     * 获取总价格
     * @param indentBatch
     * @return
     */
    Double getTotalAmount(List<Indent> indentBatch);

    String getIndentState(Long id);

    /**
     * 将indenet的
     * 过期时间；     * checkinouttime
     * list？     * state
     * 全部存入redis
     * @param indentId
     */
    void saveRedisIndent(IndentRedis indentId);

    IndentRedis getIndentRedis(Indent indent);

    String getMysqlIndentState(Long indentId);

    GetIndentBatchVO getIndentBatch(long batchId);
}

